
"""
模块名称：example_remote_fota.py
作者：冯满德
创建时间：2025 - 11 - 05
最后修改时间：2025 - 11 - 05
功能描述：用于发送和接收短信的示例代码
"""
# 远程升级
import fota
import utime
import log
import checkNet

# 设置日志输出级别
log.basicConfig(level=log.INFO)
fota_log = log.getLogger("Fota")

PROJECT_NAME = "QuecPython_fota_example"
PROJECT_VERSION = "1.0.0"

checknet = checkNet.CheckNetwork(PROJECT_NAME, PROJECT_VERSION)

def result(args):
    print('download status:',args[0],'download process:',args[1])

def run():
    stagecode, subcode = checknet.wait_network_connected(30)
    if stagecode == 3 and subcode == 1:
        fota_obj = fota()  # 创建Fota对象
        fota_log.info("httpDownload...")
        
        # -------------------------- 需用户修改 --------------------------
        # 1. 差分升级（HTTP方式）：必须替换为【用户自己的升级包HTTP链接】
        # 注意：升级包需是移远官方工具制作的差分.bin包，URL需设备能正常访问
        res = fota_obj.httpDownload(url1="http://www.example.com/fota.bin",callback=result)  
        
        # 2. mini fota方式（小存储模块用）：需替换为【用户自己的两个升级包HTTP链接】
        # 注意：仅支持mini fota的模块可用，需同时提供url1（第一阶段）和url2（第二阶段）
        # res = fota_obj.httpDownload(url1="http://www.example.com/fota1.bin",url2="http://www.example.com/fota2.bin")
        
        # 3. 差分升级（FTP方式）：必须替换为【用户自己的FTP服务器信息和升级包路径】
        # 注意：需填写实际FTP的用户名、密码、IP、端口，以及升级包的正确路径
        # res = fota_obj.httpDownload(url1="ftp://user:password@ip:port/fota.bin",callback=result) #其中user,password,ip,port需要填写具体使用的FTP服务器信息
        # -------------------------- 需用户修改 --------------------------
        
        if res != 0:
            fota_log.error("httpDownload error")
            return
        fota_log.info("wait httpDownload update...")
        utime.sleep(2)
    else:
        # 修复：原代码此处日志对象名错误（socket_log不存在），改为fota_log
        fota_log.info('Network connection failed! stagecode = {}, subcode = {}'.format(stagecode, subcode))

if __name__ == '__main__':
    fota_log.info("run start...")
    run()    